package com.sophialex.health.record.common.util;

import java.math.BigDecimal;

/**Double类型数据的加减乘除运算
 * @author Administrator
 */
public class DoubleArith {
	
	/**
	 * 两个Double数相加
	 * @param v1
	 * @param v2
	 * @return Double
	 */
	public static Double add(Double v1, Double v2) {
		
		BigDecimal b1 = new BigDecimal(v1.toString());
		BigDecimal b2 = new BigDecimal(v2.toString());
		return b1.add(b2).doubleValue();
	}
	/**
	 * 两个Double数相减
	 * @param v1
	 * @param v2
	 * @return Double
	 */
	public static Double sub(Double v1, Double v2) {
		
		BigDecimal b1 = new BigDecimal(v1.toString());
		BigDecimal b2 = new BigDecimal(v2.toString());
		return b1.subtract(b2).doubleValue();
	}
	/**
	 * 两个Double数相乘
	 * @param v1
	 * @param v2
	 * @return Double
	 */
	public static Double mul(Double v1, Double v2) {
		
		BigDecimal b1 = new BigDecimal(v1.toString());
		BigDecimal b2 = new BigDecimal(v2.toString());
		return b1.multiply(b2).doubleValue();
	}
	
	/**
	 * 两个Double数相除，并保留scale位小数
	 * @param v1
	 * @param v2
	 * @param scale
	 * @return Double
	 */
	public static Double div(Double v1, Double v2, int scale) {
		
		if (scale < 0) {
			throw new IllegalArgumentException(
			"The scale must be a positive integer or zero");
		}
		BigDecimal b1 = new BigDecimal(v1.toString());
		BigDecimal b2 = new BigDecimal(v2.toString());
		return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	/**去掉多余的0
	 * @param old
	 * @return
	 */
	public static String cutZero(String old){   
		
		String newstr=old;
		int leng=old.length()-old.indexOf(".")-1;
		if(old.indexOf(".")>-1){
			for(int i=leng;i>0;i--){   
                if(newstr.lastIndexOf("0")>-1 && newstr.charAt(newstr.length()-1)=='0'){   
                    int k = newstr.lastIndexOf("0");   
                    if(newstr.charAt(k-1)=='.'){   
                        return  newstr.substring(0,k-1);   
                    }else{   
                        newstr=newstr.substring(0,k);   
                    }   
                }else{   
                    return newstr;   
                }   
            }   
        }   
        return old;   
	}  
}
